home *** CD-ROM | disk | FTP | other *** search
Wrap
package javax.swing.text; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Shape; import java.awt.Toolkit; import javax.swing.event.DocumentEvent; import javax.swing.text.Position.Bias; public class LabelView extends View implements TabableView { Font font; FontMetrics metrics; // $FF: renamed from: fg java.awt.Color Color field_0; // $FF: renamed from: bg java.awt.Color Color field_1; Segment text = new Segment(); boolean underline; boolean strike; boolean superscript; boolean subscript; boolean rightToLeft; TabExpander expander; // $FF: renamed from: x int int field_2; public LabelView(Element var1) { super(var1); int var2 = var1.getStartOffset(); int var3 = var1.getEndOffset(); Document var4 = ((View)this).getDocument(); if (var4 instanceof AbstractDocument) { this.rightToLeft = ((AbstractDocument)var4).isLeftToRight(var2, var3) ^ true; } } public View breakView(int var1, int var2, float var3, float var4) { if (var1 == 0) { this.sync(); this.loadText(var2, ((View)this).getEndOffset()); int var5 = Utilities.getBreakLocation(this.text, this.metrics, (int)var3, (int)(var3 + var4), this.expander, var2); int var6 = var2 + var5; LabelFragment var7 = new LabelFragment(this, ((View)this).getElement(), var2, var6); var7.x = (int)var3; return var7; } else { return this; } } public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) { this.font = null; } public View createFragment(int var1, int var2) { Element var3 = ((View)this).getElement(); return new LabelFragment(this, var3, var1, var2); } public float getAlignment(int var1) { if (var1 == 1) { float var2 = (float)this.metrics.getHeight(); float var3 = (float)this.metrics.getDescent(); float var4 = (var2 - var3) / var2; return var4; } else { return super.getAlignment(var1); } } public int getBreakWeight(int var1, float var2, float var3) { return this.getBreakWeight(var1, var2, var3, ((View)this).getStartOffset(), ((View)this).getEndOffset()); } int getBreakWeight(int var1, float var2, float var3, int var4, int var5) { if (var1 != 0) { return super.getBreakWeight(var1, var2, var3); } else { this.sync(); this.loadText(var4, var5); int var6 = Utilities.getTabbedTextOffset(this.text, this.metrics, (int)var2, (int)(var2 + var3), this.expander, var4); if (var6 == 0) { return 0; } else { for(int var7 = this.text.offset + Math.min(var6, this.text.count - 1); var7 >= this.text.offset; --var7) { char var8 = this.text.array[var7]; if (Character.isWhitespace(var8)) { return 2000; } } return 1000; } } } protected Font getFont() { this.sync(); return this.font; } protected FontMetrics getFontMetrics() { this.sync(); return this.metrics; } public int getNextVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException { int var6 = this.getNextVisualPositionFrom(var1, var2, var3, var4, var5, this.rightToLeft, ((View)this).getStartOffset(), ((View)this).getEndOffset()); return var6; } int getNextVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5, boolean var6, int var7, int var8) throws BadLocationException { switch (var4) { case 1: case 5: return var1; case 2: case 4: case 6: default: throw new IllegalArgumentException("Bad direction: " + var4); case 3: if (var7 == ((View)this).getDocument().getLength()) { if (var1 == -1) { var5[0] = Bias.Forward; return var7; } return -1; } else if (var6) { if (var1 == -1) { this.loadText(var8 - 1, var8); if (this.text.array[this.text.offset] == '\n') { var5[0] = Bias.Forward; return var8 - 1; } var5[0] = Bias.Backward; return var8; } else { if (var1 == var7) { return -1; } var5[0] = Bias.Forward; return var1 - 1; } } else if (var1 == -1) { var5[0] = Bias.Forward; return var7; } else if (var1 == var8) { return -1; } else { ++var1; if (var1 == var8) { this.loadText(var8 - 1, var8); if (this.text.array[this.text.offset] == '\n') { return -1; } var5[0] = Bias.Backward; } else { var5[0] = Bias.Forward; } return var1; } case 7: if (var7 == ((View)this).getDocument().getLength()) { if (var1 == -1) { var5[0] = Bias.Forward; return var7; } else { return -1; } } else if (var6) { if (var1 == -1) { var5[0] = Bias.Forward; return var7; } else if (var1 == var8) { return -1; } else { ++var1; if (var1 == var8) { this.loadText(var8 - 1, var8); if (this.text.array[this.text.offset] == '\n') { return -1; } var5[0] = Bias.Backward; } else { var5[0] = Bias.Forward; } return var1; } } else if (var1 == -1) { this.loadText(var8 - 1, var8); if (this.text.array[this.text.offset] == '\n') { var5[0] = Bias.Forward; return var8 - 1; } else { var5[0] = Bias.Backward; return var8; } } else if (var1 == var7) { return -1; } else { var5[0] = Bias.Forward; return var1 - 1; } } } public float getPartialSpan(int var1, int var2) { this.sync(); int var3 = 0; try { Segment var4 = new Segment(); ((View)this).getDocument().getText(var1, var2 - var1, var4); var3 = Utilities.getTabbedTextWidth(var4, this.metrics, this.field_2, this.expander, var1); } catch (BadLocationException var5) { } return (float)var3; } public float getPreferredSpan(int var1) { return this.getPreferredSpan(var1, ((View)this).getStartOffset(), ((View)this).getEndOffset(), this.field_2); } final float getPreferredSpan(int var1, int var2, int var3, int var4) { this.sync(); switch (var1) { case 0: this.loadText(var2, var3); int var5 = Utilities.getTabbedTextWidth(this.text, this.metrics, var4, this.expander, var2); return (float)Math.max(var5, 1); case 1: return (float)this.metrics.getHeight(); default: throw new IllegalArgumentException("Invalid axis: " + var1); } } public float getTabbedSpan(float var1, TabExpander var2) { this.expander = var2; this.field_2 = (int)var1; return this.getPreferredSpan(0, ((View)this).getStartOffset(), ((View)this).getEndOffset(), this.field_2); } public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) { super.insertUpdate(var1, var2, var3); int var4 = ((View)this).getStartOffset(); int var5 = ((View)this).getEndOffset(); Document var6 = ((View)this).getDocument(); if (var6 instanceof AbstractDocument) { this.rightToLeft = ((AbstractDocument)var6).isLeftToRight(var4, var5) ^ true; } } final void loadText(int var1, int var2) { try { Document var3 = ((View)this).getDocument(); var3.getText(var1, var2 - var1, this.text); } catch (BadLocationException var4) { throw new StateInvariantError("LabelView: Stale view: " + var4); } } Shape modelToView(int var1, Shape var2, int var3, int var4, Position.Bias var5, boolean var6) throws BadLocationException { Rectangle var7 = var2.getBounds(); if (var1 == var4) { this.loadText(var3, var3 + 1); this.sync(); return !var6 ? new Rectangle(var7.x + var7.width, var7.y, 0, this.metrics.getHeight()) : new Rectangle(var7.x, var7.y, 0, this.metrics.getHeight()); } else if (var1 >= var3 && var1 <= var4) { this.loadText(var3, var1); this.sync(); int var8 = Utilities.getTabbedTextWidth(this.text, this.metrics, var7.x, this.expander, var3); return var6 ? new Rectangle(var7.x + var7.width - var8, var7.y, 0, this.metrics.getHeight()) : new Rectangle(var7.x + var8, var7.y, 0, this.metrics.getHeight()); } else { throw new BadLocationException("modelToView - can't convert", var4); } } public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException { return this.modelToView(var1, var2, ((View)this).getStartOffset(), ((View)this).getEndOffset(), var3, this.rightToLeft); } public void paint(Graphics var1, Shape var2) { Container var3 = ((View)this).getContainer(); if (this.field_1 != null) { Rectangle var4 = var2 instanceof Rectangle ? (Rectangle)var2 : var2.getBounds(); var1.setColor(this.field_1); var1.fillRect(var4.x, var4.y, var4.width, var4.height); } if (var3 instanceof JTextComponent) { JTextComponent var6 = (JTextComponent)var3; Highlighter var5 = var6.getHighlighter(); if (var5 instanceof LayeredHighlighter) { ((LayeredHighlighter)var5).paintLayeredHighlights(var1, ((View)this).getStartOffset(), ((View)this).getEndOffset(), var2, var6, this); } } this.paintText(var3, var1, var2, ((View)this).getStartOffset(), ((View)this).getEndOffset(), false, this.rightToLeft); } void paintText(Component var1, Graphics var2, Shape var3, int var4, int var5, boolean var6, boolean var7) { Rectangle var8 = var3.getBounds(); this.sync(); int var9 = var8.y + var8.height - this.metrics.getDescent(); var2.setFont(this.font); boolean var10 = false; if (var1 instanceof JTextComponent) { JTextComponent var11 = (JTextComponent)var1; Color var12 = var11.getSelectedTextColor(); if (var12 != null && !var12.equals(this.field_0)) { Position.Bias[] var13 = new Position.Bias[1]; Position.Bias[] var14 = new Position.Bias[1]; int var15 = var11.getSelectionStart(var13); int var16 = var11.getSelectionEnd(var14); if (var15 != var16) { int var17; if (var15 <= var4) { var17 = var4; } else { var17 = Math.min(var15, var5); } int var18; if (var16 >= var5) { var18 = var5; } else { var18 = Math.max(var16, var4); } if (var17 != var18) { int var19 = var8.x; var10 = true; if (var17 > var4) { var19 = this.paintTextUsingColor(var19, var9, var2, var4, var17, this.field_0, var6); } var19 = this.paintTextUsingColor(var19, var9, var2, var17, var18, var12, var6); if (var18 < var5) { this.paintTextUsingColor(var19, var9, var2, var18, var5, this.field_0, var6); } } } } } if (!var10) { this.paintTextUsingColor(var8.x, var9, var2, var4, var5, this.field_0, var6); } } final int paintTextUsingColor(int var1, int var2, Graphics var3, int var4, int var5, Color var6, boolean var7) { var3.setColor(var6); this.loadText(var4, var5); if (this.superscript) { var2 -= this.metrics.getAscent() / 2; } else if (this.subscript) { var2 += this.metrics.getDescent(); } var1 = Utilities.drawTabbedText(this.text, var1, var2, var3, this.expander, var4); if (this.underline || this.strike) { int var9 = var1 - var1; if (var7) { while(this.text.count > 0 && Character.isWhitespace(this.text.array[this.text.count - 1])) { var9 -= this.metrics.charWidth(this.text.array[this.text.count - 1]); --this.text.count; } } if (this.underline) { ++var2; } else if (this.strike) { var2 -= this.metrics.getAscent() / 2; } var3.drawLine(var1, var2, var1, var2); } return var1; } protected void setPropertiesFromAttributes() { AttributeSet var1 = ((View)this).getAttributes(); if (var1 != null) { Document var2 = ((View)this).getDocument(); if (!(var2 instanceof StyledDocument)) { throw new StateInvariantError("LabelView needs StyledDocument"); } StyledDocument var3 = (StyledDocument)var2; this.font = var3.getFont(var1); this.field_0 = var3.getForeground(var1); if (var1.isDefined(StyleConstants.Background)) { this.field_1 = var3.getBackground(var1); } else { this.field_1 = null; } this.setUnderline(StyleConstants.isUnderline(var1)); this.setStrikeThrough(StyleConstants.isStrikeThrough(var1)); this.setSuperscript(StyleConstants.isSuperscript(var1)); this.setSubscript(StyleConstants.isSubscript(var1)); this.metrics = Toolkit.getDefaultToolkit().getFontMetrics(this.font); } } protected void setStrikeThrough(boolean var1) { this.strike = var1; } protected void setSubscript(boolean var1) { this.subscript = var1; } protected void setSuperscript(boolean var1) { this.superscript = var1; } protected void setUnderline(boolean var1) { this.underline = var1; } final void sync() { if (this.font == null) { this.setPropertiesFromAttributes(); } } public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) { var4[0] = Bias.Forward; return this.viewToModel(var1, var2, var3, var4, ((View)this).getStartOffset(), ((View)this).getEndOffset(), this.rightToLeft); } int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4, int var5, int var6, boolean var7) { Rectangle var8 = var3.getBounds(); this.sync(); this.loadText(var5, var6); int var9 = Utilities.getTabbedTextOffset(this.text, this.metrics, var8.x, (int)var1, this.expander, var5); int var10; if (var7) { var10 = var6 - var9; } else { var10 = var5 + var9; } if (var10 == var6) { var4[0] = Bias.Backward; } else { var4[0] = Bias.Forward; } return var10; } }